題目:
(6 級) String array duplicates
在這個 Kata,你會得到一組字串的陣列,而你的任務是移除連續且重複的字母。
範例:
["abracadabra","allottee","assessee"] => ["abracadabra","alote","asese"]
["kelless","keenness"] => ["keles","kenes"]
字串皆會是小寫,且沒有空白字元。
思考方式:
Ruby 解法:
def dup(arr)
# 使用 map 處理陣列
arr.map { |str|
# 把陣列中的每個字串單獨拆開成一個陣列
new_arr = str.split("")
# 使用 select method 挑選出需要的字母
# 同時使用 with_index method 做前後兩個字母的比較
new_arr.select.with_index { |char, index|
# 挑選第一個字母 或 與前一個字母不重複的字母
char if (index == 0) or (new_arr[index] != new_arr[index-1])
# 挑選完之後用 join method 轉回字串
}.join
}
end
JavaScript 解法:
function dup(s) {
// 使用 map 處理陣列
let result = s.map(str => {
// 把陣列中的每個字串單獨拆開成一個陣列
let arr = str.split("")
// 使用 filter function 挑選出需要的字母
arr = arr.filter((char, index) => {
// 挑選第一個字母 或 與前一個字母不重複的字母
if ((index === 0) || (arr[index] != arr[index-1])) {
return char;
}
});
// 挑選完之後用 join function 轉回字串
return arr.join("")
});
return result
};